package fabricas;

import java.util.ArrayList;

/**
 * Trabalho DAS - 2014/2015
 * @author a21210380, a21190325, a21210392
 */
public abstract class Pool<T> {
    private final ArrayList<T> objectos;
    
    public Pool(int tamanho) {
        objectos = new ArrayList<>(tamanho);
        for(int i=0; i<tamanho; ++i) {
            objectos.add(criarObjecto());
        }
    }
    
    public T obter() {
        if(objectos.isEmpty()) {
            return criarObjecto();
        } else {
            return objectos.remove(0);
        }
    }
    
    public void libertar(T p) {
        objectos.add(p);
    }
    
    public abstract T criarObjecto();
    
}
